home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / optivc32 / vfmath.h < prev    next >
C/C++ Source or Header  |  1999-03-06  |  25KB  |  465 lines

  1. /*  VFmath.h
  2.  
  3.   vector management functions:
  4.   math functions performed on each individual element of an
  5.   array or vector of the data type "float";   real numbers
  6.  
  7.   Copyright (c) 1996-1999 by Martin Sander
  8.   All Rights Reserved.
  9. */
  10.  
  11. #ifndef __VFMATH_H
  12. #define __VFMATH_H
  13.  
  14. #ifndef __VFSTD_H 
  15. #include <VFstd.h>
  16. #endif
  17.  
  18. #ifdef __cplusplus
  19. extern "C" {
  20. #endif
  21.  
  22.  
  23.  
  24. /**************************  Rounding **********************************/
  25.  
  26. int  __vf   VF_round(  fVector  Y, fVector X, ui size );
  27. int  __vf   VF_roundtoBI( biVector Y, fVector X, ui size );
  28. int  __vf   VF_roundtoSI( siVector Y, fVector X, ui size );
  29. int  __vf   VF_roundtoI(  iVector  Y, fVector X, ui size );
  30. int  __vf   VF_roundtoLI( liVector Y, fVector X, ui size );
  31. int  __vf   VF_roundtoQI( qiVector Y, fVector X, ui size );
  32. int  __vf   VF_roundtoUB( ubVector Y, fVector X, ui size );
  33. int  __vf   VF_roundtoUS( usVector Y, fVector X, ui size );
  34. int  __vf   VF_roundtoU(  uVector  Y, fVector X, ui size );
  35. int  __vf   VF_roundtoUL( ulVector Y, fVector X, ui size );
  36.  
  37. int  __vf   VF_floor(  fVector  Y, fVector X, ui size );
  38. int  __vf   VF_floortoBI( biVector Y, fVector X, ui size );
  39. int  __vf   VF_floortoSI( siVector Y, fVector X, ui size );
  40. int  __vf   VF_floortoI(  iVector  Y, fVector X, ui size );
  41. int  __vf   VF_floortoLI( liVector Y, fVector X, ui size );
  42. int  __vf   VF_floortoQI( qiVector Y, fVector X, ui size );
  43. int  __vf   VF_floortoUB( ubVector Y, fVector X, ui size );
  44. int  __vf   VF_floortoUS( usVector Y, fVector X, ui size );
  45. int  __vf   VF_floortoU(  uVector  Y, fVector X, ui size );
  46. int  __vf   VF_floortoUL( ulVector Y, fVector X, ui size );
  47.  
  48. int  __vf   VF_ceil(  fVector  Y, fVector X, ui size );
  49. int  __vf   VF_ceiltoBI( biVector Y, fVector X, ui size );
  50. int  __vf   VF_ceiltoSI( siVector Y, fVector X, ui size );
  51. int  __vf   VF_ceiltoI(  iVector  Y, fVector X, ui size );
  52. int  __vf   VF_ceiltoLI( liVector Y, fVector X, ui size );
  53. int  __vf   VF_ceiltoQI( qiVector Y, fVector X, ui size );
  54. int  __vf   VF_ceiltoUB( ubVector Y, fVector X, ui size );
  55. int  __vf   VF_ceiltoUS( usVector Y, fVector X, ui size );
  56. int  __vf   VF_ceiltoU(  uVector  Y, fVector X, ui size );
  57. int  __vf   VF_ceiltoUL( ulVector Y, fVector X, ui size );
  58.  
  59. int  __vf   VF_chop(  fVector  Y, fVector X, ui size );
  60. int  __vf   VF_choptoBI( biVector Y, fVector X, ui size );
  61. int  __vf   VF_choptoSI( siVector Y, fVector X, ui size );
  62. int  __vf   VF_choptoI(  iVector  Y, fVector X, ui size );
  63. int  __vf   VF_choptoLI( liVector Y, fVector X, ui size );
  64. int  __vf   VF_choptoQI( qiVector Y, fVector X, ui size );
  65. int  __vf   VF_choptoUB( ubVector Y, fVector X, ui size );
  66. int  __vf   VF_choptoUS( usVector Y, fVector X, ui size );
  67. int  __vf   VF_choptoU(  uVector  Y, fVector X, ui size );
  68. int  __vf   VF_choptoUL( ulVector Y, fVector X, ui size );
  69.  
  70. #define VF_trunc      VF_chop
  71. #define VF_trunctoBI  VF_choptoBI
  72. #define VF_trunctoSI  VF_choptoSI
  73. #define VF_trunctoI   VF_choptoI
  74. #define VF_trunctoLI  VF_choptoLI
  75. #define VF_trunctoQI  VF_choptoQI
  76. #define VF_trunctoUB  VF_choptoUB
  77. #define VF_trunctoUS  VF_choptoUS
  78. #define VF_trunctoU   VF_choptoU
  79. #define VF_trunctoUL  VF_choptoUL
  80.  
  81. #if defined V_HUGE
  82.       #define   VF_roundtoUI    VF_roundtoUL
  83.       #define   VF_floortoUI    VF_floortoUL
  84.       #define   VF_ceiltoUI     VF_ceiltoUL
  85.       #define   VF_choptoUI     VF_choptoUL
  86.       #define   VF_trunctoUI    VF_trunctoUL
  87. #else
  88.       #define   VF_roundtoUI    VF_roundtoU
  89.       #define   VF_floortoUI    VF_floortoU
  90.       #define   VF_ceiltoUI     VF_ceiltoU
  91.       #define   VF_choptoUI     VF_choptoU
  92.       #define   VF_trunctoUI    VF_trunctoU
  93. #endif
  94.  
  95. /********************  Comparisons ********************************/
  96.  
  97. void __vf   VF_cmp0(    fVector Y, fVector X, ui size );
  98. ui   __vf   VF_cmp_eq0( fVector Y, fVector X, ui size );
  99. ui   __vf   VF_cmp_ne0( fVector Y, fVector X, ui size );
  100. ui   __vf   VF_cmp_le0( fVector Y, fVector X, ui size );
  101. ui   __vf   VF_cmp_lt0( fVector Y, fVector X, ui size );
  102. ui   __vf   VF_cmp_ge0( fVector Y, fVector X, ui size );
  103. ui   __vf   VF_cmp_gt0( fVector Y, fVector X, ui size );
  104.  
  105. ui   __vf   VF_cmp_eq0ind( uiVector Ind, fVector X, ui size );
  106. ui   __vf   VF_cmp_ne0ind( uiVector Ind, fVector X, ui size );
  107. ui   __vf   VF_cmp_le0ind( uiVector Ind, fVector X, ui size );
  108. ui   __vf   VF_cmp_lt0ind( uiVector Ind, fVector X, ui size );
  109. ui   __vf   VF_cmp_ge0ind( uiVector Ind, fVector X, ui size );
  110. ui   __vf   VF_cmp_gt0ind( uiVector Ind, fVector X, ui size );
  111.  
  112. void __vf   VF_cmpC(    fVector Y, fVector X, ui size, float C );
  113. ui   __vf   VF_cmp_eqC( fVector Y, fVector X, ui size, float C );
  114. ui   __vf   VF_cmp_neC( fVector Y, fVector X, ui size, float C );
  115. ui   __vf   VF_cmp_leC( fVector Y, fVector X, ui size, float C );
  116. ui   __vf   VF_cmp_ltC( fVector Y, fVector X, ui size, float C );
  117. ui   __vf   VF_cmp_geC( fVector Y, fVector X, ui size, float C );
  118. ui   __vf   VF_cmp_gtC( fVector Y, fVector X, ui size, float C );
  119.  
  120. ui   __vf   VF_cmp_eqCind( uiVector Ind, fVector X, ui size, float C );
  121. ui   __vf   VF_cmp_neCind( uiVector Ind, fVector X, ui size, float C );
  122. ui   __vf   VF_cmp_leCind( uiVector Ind, fVector X, ui size, float C );
  123. ui   __vf   VF_cmp_ltCind( uiVector Ind, fVector X, ui size, float C );
  124. ui   __vf   VF_cmp_geCind( uiVector Ind, fVector X, ui size, float C );
  125. ui   __vf   VF_cmp_gtCind( uiVector Ind, fVector X, ui size, float C );
  126.  
  127. void __vf   VF_cmpV(    fVector Z, fVector X, fVector Y, ui size );
  128. ui   __vf   VF_cmp_eqV( fVector Z, fVector X, fVector Y, ui size );
  129. ui   __vf   VF_cmp_neV( fVector Z, fVector X, fVector Y, ui size );
  130. ui   __vf   VF_cmp_leV( fVector Z, fVector X, fVector Y, ui size );
  131. ui   __vf   VF_cmp_ltV( fVector Z, fVector X, fVector Y, ui size );
  132. ui   __vf   VF_cmp_geV( fVector Z, fVector X, fVector Y, ui size );
  133. ui   __vf   VF_cmp_gtV( fVector Z, fVector X, fVector Y, ui size );
  134.  
  135. ui   __vf   VF_cmp_eqVind( uiVector Ind, fVector X, fVector Y, ui size );
  136. ui   __vf   VF_cmp_neVind( uiVector Ind, fVector X, fVector Y, ui size );
  137. ui   __vf   VF_cmp_leVind( uiVector Ind, fVector X, fVector Y, ui size );
  138. ui   __vf   VF_cmp_ltVind( uiVector Ind, fVector X, fVector Y, ui size );
  139. ui   __vf   VF_cmp_geVind( uiVector Ind, fVector X, fVector Y, ui size );
  140. ui   __vf   VF_cmp_gtVind( uiVector Ind, fVector X, fVector Y, ui size );
  141.  
  142. ui   __vf   VF_cmp_inclrange0C( fVector Y, fVector X, ui size, float C );
  143. ui   __vf   VF_cmp_exclrange0C( fVector Y, fVector X, ui size, float C );
  144. ui   __vf   VF_cmp_inclrangeCC( fVector Y, fVector X, ui size, float CLo, float CHi );
  145. ui   __vf   VF_cmp_exclrangeCC( fVector Y, fVector X, ui size, float CLo, float CHi );
  146.  
  147. ui   __vf   VF_cmp_inclrange0Cind( uiVector Ind, fVector X, ui size, float C );
  148. ui   __vf   VF_cmp_exclrange0Cind( uiVector Ind, fVector X, ui size, float C );
  149. ui   __vf   VF_cmp_inclrangeCCind( uiVector Ind, fVector X, ui size, float CLo, float CHi );
  150. ui   __vf   VF_cmp_exclrangeCCind( uiVector Ind, fVector X, ui size, float CLo, float CHi );
  151.  
  152.  
  153. /********************  Standard Arithmetics   ***************************/
  154.  
  155. void  __vf  VF_equC( fVector X, ui size, float C );
  156. void  __vf  VF_equV( fVector Y, fVector X, ui size );
  157. void  __vf  VFx_equV( fVector Y, fVector X, ui size, float A, float B );
  158.  
  159. void  __vf  VF_addC(  fVector Y, fVector X, ui size, float C );
  160. void  __vf  VF_subC(  fVector Y, fVector X, ui size, float C );
  161. void  __vf  VF_subrC( fVector Y, fVector X, ui size, float C );
  162. void  __vf  VF_mulC(  fVector Y, fVector X, ui size, float C );
  163. void  __vf  VF_divC(  fVector Y, fVector X, ui size, float C );
  164. void  __vf  VF_divrC( fVector Y, fVector X, ui size, float C );
  165. void  __vf  VFx_divrC( fVector Y, fVector X, ui size, float A, float B, float C );
  166.  
  167. void  __vf  VF_addV(  fVector Z, fVector X, fVector Y, ui size );
  168. void  __vf  VF_subV(  fVector Z, fVector X, fVector Y, ui size );
  169. void  __vf  VF_subrV( fVector Z, fVector X, fVector Y, ui size );
  170. void  __vf  VF_mulV(  fVector Z, fVector X, fVector Y, ui size );
  171. void  __vf  VF_divV(  fVector Z, fVector X, fVector Y, ui size );
  172. void  __vf